package com.hxzy.common.security;


import cn.hutool.core.util.StrUtil;
import com.hxzy.common.consts.UserConstants;
import com.hxzy.common.util.ServletUtils;
import com.hxzy.system.vo.AdminLoginVO;

import javax.servlet.http.HttpServletRequest;

/**
 * 获取后台登录用户信息
 */
public class AdminInfoUtil {

    /**
     * 得到后台用户信息
     * @return
     */
    public static AdminLoginVO getAdmin(){
        SecurityContextHolder.AdminThreadLocal.get();
         AdminLoginVO adminLoginVO=  SecurityContextHolder.AdminThreadLocal.get();
        return adminLoginVO;
    }


    /**
     * 得到当前的用户ID
     * @return
     */
    public static Long getUserId(){
        return getAdmin().getSysUser().getUserId();
    }

    /**
     * 得到真实姓名
     * @return
     */
    public static String getRealName(){
        return getAdmin().getSysUser().getRealName();
    }

    /**
     * 得到部门名称
     * @return
     */
    public static String getDeptName(){
        return getAdmin().getSysUser().getDept().getDeptName();
    }


    /**
     * 获取请求token
     */
    public static String getToken() {
        return getToken(ServletUtils.getRequest());
    }

    /**
     * 根据request获取请求token
     */
    public static String getToken(HttpServletRequest request)
    {
        // 从header获取token标识
        String token = request.getHeader(UserConstants.AUTHORIZATION_HEADER);
        return replaceTokenPrefix(token);
    }

    /**
     * 裁剪token前缀
     */
    public static String replaceTokenPrefix(String token)
    {
        // 如果前端设置了令牌前缀，则裁剪掉前缀
        if (StrUtil.isNotEmpty(token) && token.startsWith(UserConstants.BEARER))
        {
            token = token.replaceFirst(UserConstants.BEARER, "").trim();
        }
        return token;
    }

}
